/*jshint esversion: 6 */
exports.install = function (Vue) {
    /**
     * 登录用户信息
     */
    Vue.prototype.userInfo = null;

    /**
     * 获取地址栏url中的参数值
     * @param {String} name 地址栏参数名
     */
    Vue.prototype.getUrlParam = function(name) {
        var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); //构造一个含有目标参数的正则表达式对象
        var r = window.location.search.substr(1).match(reg);    //匹配目标参数
        if (r != null) return unescape(r[2]); return null;      //返回参数值
    };

    /**
     * 获取地址栏url中的参数值(解决中文乱码)
     * @param {String} name 地址栏参数名
     */
    Vue.prototype.getZhUrlParam = function(name) {
        var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); //构造一个含有目标参数的正则表达式对象
        var r = window.location.search.substr(1).match(reg);    //匹配目标参数
        if (r != null) return decodeURIComponent(r[2]); return null;      //返回参数值
    };


    /**
     * 设置Cookie
     * @param {String} cname 设置key
     * @param {String} cvalue 设置value
     * @param {Number} exhours 设置存储时间（单位：小时）
     */
    Vue.prototype.setCookie = function(cname, cvalue, exhours){
        var d = new Date();
        d.setTime(d.getTime()+(exhours*60*60*1000));
        var expires = "expires="+d.toGMTString();
        document.cookie = cname + "=" + cvalue + "; " + expires + "; path=/";
    };

    /**
     * 获取Cookie
     * @param {String} cname 需要获取的key
     */
    Vue.prototype.getCookie = function(cname){
        var name = cname + "=";
        var ca = document.cookie.split(';');
        for(var i=0; i<ca.length; i++) 
        {
        var c = ca[i].trim();
        if (c.indexOf(name)==0) return c.substring(name.length,c.length);
        }
        return "";
    };

    /**
     * 删除Cookie
     * @param {String} cname 需要删除的key
     */
    Vue.prototype.delCookie = function(cname){
        this.setCookie(cname, ' ', -1);
    };

    /**
     * 无刷新，改变地址栏
     * @param {String} str 地址栏从当前字符串开始去掉之后的字符串
     */
    Vue.prototype.replaceUrl = function(str){
        var newUrl = window.location.href;
        if( newUrl.indexOf(str) != -1 ){
            newUrl  = newUrl.substring(0, newUrl.indexOf(str));
        }
        history.replaceState(null, null, newUrl);
    };
    
    /**
     * 判断字符串是否为空
     * @param {String} obj 
     */
    Vue.prototype.isEmpty = function(obj){
        if(typeof obj == "undefined" || obj == null || obj == "") {
            return true;
        }
        var regu = "^[ ]+$";
        var re = new RegExp(regu);
        return re.test(obj);
    };

    /**
     * 判断数组是否为空
     * @param {Array} obj 
     */
    Vue.prototype.isEmptyArray = function(obj){
        if(typeof obj == "undefined" || obj == null || obj.length == 0) {
            return true;
        }
        return false;
    };

    /**
     * 判断json是否为空
     * @param {Object} obj 
     */
    Vue.prototype.isEmptyObject = function(obj){ 
        for(var key in obj){  
            return false;
        }
        return true;
    };

    /**
     * 判断某个元素是否有滚动条
     * @param {String} tag 元素
     */
    Vue.prototype.hasScrollbar = function(tag){ 
        let _tag = tag.indexOf('.') != -1 ? this.$Jquery(tag).get(0) : this.$Jquery(tag);
        return (_tag.scrollHeight > _tag.clientHeight) || (_tag.offsetHeight > _tag.clientHeight);
    };
    
    /**
     * 提示某个值不能为空
     * @param {String} cvalue 需要判断的值
     * @param {String} message 提示内容
     */
    Vue.prototype.notEmpty = function(cvalue, message){
        if( this.isEmpty(cvalue) ) {
            // this.$mui.toast('名不能为空！');
            this.$message.warning(message, 1);
            return true;
        }
        return false;
    };
	
	/**
	 * 将字符串分割为单个字符数组
	 * @param {String} cvalue 需要分割的字符串
	 */
	Vue.prototype.onStringSplit = function(cvalue, flag){
		// if( !this.checkCh('asd') ) return 'asda'.trim();
		let arr = flag ? cvalue.trim().split('').reverse() : 
						cvalue.trim().split('');
		return arr;
	};
	
	/**
	 * 判断字符串是否含有中文, 含有中文返回true, 不含有则返回false
	 * @param {String} str 字符串
	 */
	Vue.prototype.checkCh = function(str){
		let regExp = new RegExp('[\\u4E00-\\u9FFF]', 'g');
		return regExp.test(str);
	}
};